"""
10-变量的类型注解

Python在3.5版本的时候引入了类型注解，以方便静态类型检查工具，IDE等第三方工具。
类型注解：在代码中涉及数据交互的地方，提供数据类型的注解（显式的说明）。

主要功能：
 · 帮助第三方IDE工具（如PyCharm）对代码进行类型推断，协助做代码提示
 · 帮助开发者自身对变量进行类型注释

支持：
 · 变量的类型注解
 · 函数（方法）形参列表和返回值的类型注解

变量类型注解，基础语法：
变量:类型


注意：类型注解，仅仅作为备注，并不限制实际的类型，只是提示用
"""
import json
import random

print("========================== 基础数据类型注解")
var_1: int = 10
var_2: str = "hello"

print("========================== 类对象类型注解")


class Student:
    pass


stu: Student = Student()
print("========================== 基础容器类型注解")
my_list: list = [1, 2, 3]
my_tuple: tuple = (4, 5, 6)
my_dict: dict = {"age", 18}

print("========================== 容器类型详细注解")
my_list: list[int] = [1, 2, 3]
my_tuple: tuple[int, str, bool] = (4, "哈哈", True)
my_dict: dict[str, int] = {"age", 18}
"""
注意：
 · 元组类型设置类型详细注解，需要将每一个元素都标记出来
 · 字典类型设置类型详细注解，需要2个类型，第一个是key第二个是value
"""
print("========================== 在注释中进行类型注解")

var_3 = random.randint(1,10) # type: int
var_4 = json.load('{"name","张三"}') # type: dict[str,str]
def func():
    return 10
var_5 = func() # type: int
"""
一般，无法直接看出变量类型时才会添加变量的类型注解，
如果能够直接看出变量类型，则不需要添加类型注解。
"""